package com.itheima.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.itheima.controller.StockAsnController;
import com.itheima.dto.WarehousingEntryDTO;
import com.itheima.pojo.WarehousingEntry;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

public interface WarehousingEntryService extends IService<WarehousingEntry> {
    /**
     * 新增到货通知
     * @param warehousingEntryDTO 到货通知数据
     */
    void addArrivalNotification(WarehousingEntryDTO warehousingEntryDTO);

    /**
     * 修改到货通知
     * @param warehousingEntryDTO 到货通知数据
     */
    void updateArrivalNotification(WarehousingEntryDTO warehousingEntryDTO);

    /**
     * 删除到货通知
     * @param id 到货通知ID
     */
    void deleteArrivalNotification(Long id);

    /**
     * 确认到货
     * @param ids 到货通知明细ID列表
     * @param arrivalTime 到达时间
     */
    void confirmArrival(List<Long> ids, LocalDate arrivalTime);

    /**
     * 确认卸货
     * @param ids 卸货明细ID列表
     * @param unloadStaffId 卸货员工ID
     * @param unloadTime 卸货时间
     */
    void confirmUnloaded(List<Long> ids, Integer unloadStaffId, LocalDateTime unloadTime);

    /**
     * 撤销卸货状态
     * @param ids 卸货明细ID列表
     */
    void revertUnloaded(List<Long> ids);

    /**
     * 执行分拣
     * @param id 入库明细ID
     * @param sortQuantity 分拣数量
     * @param expireDate 过期时间
     */
    void performSorting(Long id, Integer sortQuantity, LocalDateTime expireDate);

    /**
     * 确认分拣完成
     * @param ids 分拣明细ID列表
     */
    void confirmSortingCompleted(List<Long> ids);

    /**
     * 撤销分拣状态
     * @param ids 分拣明细ID列表
     */
    void revertSorting(List<Long> ids);

    /**
     * 执行上架
     * @param items 上架商品列表
     * @param locationIds 库位ID列表
     */
    void performShelving(List<StockAsnController.ShelvingItem> items, List<Long> locationIds);

    /**
     * 撤销上架状态
     * @param ids 上架记录ID列表
     */
    void revertShelved(List<Long> ids);

}
